import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

/**
 * 通用命令使用
 */
public class RedisGenericDemo {


    public static void main(String[] args) {
        // 通过端口映射 配置代理端口8888
        JedisPool jedisPool = new JedisPool("tcp://127.0.0.1:8888"); // 连接池

        // 获取redis连接对象 从redis连接池中
        try(Jedis jedis = jedisPool.getResource()){
            // redis的各种命令都已经被映射到jedis的方法中, 想咋使用咋使用
           /* String pong = jedis.ping();
            System.out.println(pong);*/
            test1(jedis);
            test2(jedis);
            test3(jedis);
            test4(jedis);
            test5(jedis);
        }
    }

    /**
     * get && set
     * @param jedis
     */
    public static void test1(Jedis jedis){
        jedis.flushAll();
        jedis.set("key","value");
        String key = jedis.get("key");
        System.out.println(key);
    }

    /**
     * keys
     * @param jedis
     */
    public static void test2(Jedis jedis){
        jedis.flushAll();
        jedis.set("key1","value1");
        jedis.set("key2","value2");
        jedis.set("key3","value3");
        jedis.keys("*"); // 匹配规则
    }

    /**
     * exists && del
     * @param jedis
     */
    public static void test3(Jedis jedis){
        jedis.flushAll();
        System.out.println("exists && del");
        jedis.set("key1","value1");
        jedis.set("key2","value2");
        jedis.set("key3","value3");
        boolean exists = jedis.exists("key1");
        System.out.println(exists); // true
        jedis.del("key1");
        System.out.println(jedis.exists("key1")); // false
    }

    /**
     * expire(到期) && ttl
     * @param jedis
     */
    public static void test4(Jedis jedis){
        jedis.flushAll();
        jedis.set("key1","value1");
        jedis.expire("key1",2);
        System.out.println(jedis.ttl("key1"));
        System.out.println(jedis.ttl("key1"));
        System.out.println(jedis.ttl("key1"));
        System.out.println(jedis.ttl("key1"));
        System.out.println(jedis.ttl("key1"));
    }

    /**
     * type
     * @param jedis
     */
    public static void test5(Jedis jedis){
        jedis.flushAll();
        jedis.set("key1","value1");
        jedis.lpush("key2","value1","value2");
        jedis.hset("key3","field1","value1");
        System.out.println(jedis.type("Key1"));
        System.out.println(jedis.type("key2"));
        System.out.println(jedis.type("key3"));
    }

}

